package persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import model.Aluno;
import model.Trabalho;

public class TccDaoImpl implements TccDao {
	Connection c;

	public TccDaoImpl() {
		GenericDao gDao = new GenericDao();
		c = gDao.getConnectionAccTcc();
	}

	@Override
	public ResultSet geraFichaOrientacao(String semestre, String turno,
			Aluno aluno) throws SQLException {
		ResultSet rs = null;
		String sem = semestre.substring(0, 1);
//		String anoChar = semestre.substring(semestre.length() - 4,
//				semestre.length());
//		int ano = Integer.parseInt(anoChar);
		int ano = 2013;
		StringBuffer sb = new StringBuffer();
		if (sem.equals("2")) {
			sb.append("Select aluno.ra, aluno.nome, trabalho.titulo, trabalho.curso, orientacao.orientacao,");
			sb.append("CONVERT(char(10),orientacao.data_hora,103) as data,");
			sb.append("CONVERT(char(5),orientacao.data_hora,108) as hora,");
			sb.append("'" + semestre + "' as semestre,");
			sb.append("'" + turno + "' as turno ");
			sb.append("From aluno inner join aluno_trabalho ");
			sb.append("On aluno.ra = aluno_trabalho.ra_aluno ");
			sb.append("Inner join trabalho ");
			sb.append("on trabalho.codigo = aluno_trabalho.codigo_trabalho ");
			sb.append("inner join orientacao ");
			sb.append("on trabalho.codigo = orientacao.codigo_trabalho ");
			sb.append("where aluno.ra = ?");
			sb.append("AND YEAR(orientacao.data_hora) = ? AND ");
			sb.append("( ");
			sb.append("MONTH(orientacao.data_hora) = 7 OR ");
			sb.append("MONTH(orientacao.data_hora) = 8 OR ");
			sb.append("MONTH(orientacao.data_hora) = 9 OR ");
			sb.append("MONTH(orientacao.data_hora) = 10 OR ");
			sb.append("MONTH(orientacao.data_hora) = 11 OR ");
			sb.append("MONTH(orientacao.data_hora) = 12)  ");
		} else {
			sb.append("Select aluno.ra, aluno.nome, trabalho.titulo, trabalho.curso, orientacao.orientacao,");
			sb.append("CONVERT(char(10),orientacao.data_hora,103) as data,");
			sb.append("CONVERT(char(5),orientacao.data_hora,108) as hora,");
			sb.append("'" + semestre + "' as semestre,");
			sb.append("'" + turno + "' as turno ");
			sb.append("From aluno inner join aluno_trabalho ");
			sb.append("On aluno.ra = aluno_trabalho.ra_aluno ");
			sb.append("Inner join trabalho ");
			sb.append("on trabalho.codigo = aluno_trabalho.codigo_trabalho ");
			sb.append("inner join orientacao ");
			sb.append("on trabalho.codigo = orientacao.codigo_trabalho ");
			sb.append("where aluno.ra = ? ");
			sb.append("AND YEAR(orientacao.data_hora) = ? AND ");
			sb.append("( ");
			sb.append("MONTH(orientacao.data_hora) = 1 OR ");
			sb.append("MONTH(orientacao.data_hora) = 2 OR ");
			sb.append("MONTH(orientacao.data_hora) = 3 OR ");
			sb.append("MONTH(orientacao.data_hora) = 4 OR ");
			sb.append("MONTH(orientacao.data_hora) = 5 OR ");
			sb.append("MONTH(orientacao.data_hora) = 6)  ");
		}

		String sql = sb.toString();
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setString(1, aluno.getRa());
		ps.setInt(2, ano);
		rs = ps.executeQuery();
		return rs;
	}

	@Override
	public ResultSet geraFichaPreBanca() throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ResultSet geraFichaAcompanhamento(Trabalho trabalho, Aluno aluno)
			throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

}
